#include <iostream>
#include "RegFit.h"
using std::cin;
using std::cout;
using std::endl;
template<typename A,typename B>
map<A, B> operator+(const map<A, B>a, const map<A, B>b)
{
    map<A, B>ret = a;
    for (const auto& s : b)
        ret.insert(s);
    return ret;
}
int main()
{
    string a;
    map<char, string>alpha;
    for (char ch = 'a'; ch <= 'z'; ch++)alpha[ch] = alpha[ch - 'a' + 'A'] = "alpha";
    map<char, string>digit;
    for (char ch = '0'; ch <= '9'; ch++)digit[ch] = "digit";
    map<char, string>digitnz;
    for (char ch = '1'; ch <= '9'; ch++)digitnz[ch] = "digitnz";
    map<char, string>zero = { { '0',"zero" } };
    map<char, string>underline = { { '_',"underline" } };
    RegFit identifier("(alpha|underline)(alpha|digit|underline)*", alpha + underline + digit);
    RegFit number("zero|digitnz(digitnz|zero)*", zero + digitnz);
    return 0;
}